﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace KishOnlineCommone.CarDTOs
{
    public class BrandDTO
    {
        public int ID { get; set; }
        public string Code { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class CarAnnouncementDTO
    {
        public int CarID { get; set; }
        public CarDTO Car { get; set; }
        public int UserID { get; set; }
        public UserDTO User { get; set; }
        public DateTime? StartDate { get; set; }
        public string strStartDate { get; set; }
        public DateTime? FinishDate { get; set; }
        public string strFinishDate { get; set; }
        public short CarAnnouncementTariffID { get; set; }
        public CarAnnouncementTariffDTO CarAnnouncementTariff { get; set; }
        public int VisitCount { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsActive { get; set; }
    }
    public class CarAnnouncementTariffDTO
    {
        public short ID { get; set; }
        public string Title { get; set; }
        public double Price { get; set; }
        public short Period { get; set; }
        public bool ShowVistCount { get; set; }
        public bool ShowInOtherAnnouncment { get; set; }
        public bool SendEmailToCustomer { get; set; }
        public double PriorityCoefficient { get; set; }
        public string Description { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class CarDTO
    {
        public int ID { get; set; }
        public double? Price { get; set; }
        public int? ProductYear { get; set; }
        public double? TraveledDistance { get; set; }
        public string Description { get; set; }
        public int? ColorID { get; set; }
        public ColorDTO Color { get; set; }
        public int ModelID { get; set; }
        public string KeyWords { get; set; }
        public ModelDTO Model { get; set; }
        public int? StatusID { get; set; }
        public CarStatusDTO Status { get; set; }
        public List<FileDTO> CarImages { get; set; }            
        public bool IsDeleted { get; set; }
    }
    public class InActiveCarsDTO
    {
        public CarDTO Car { get; set; }
        public string Owner { get; set; }
        public bool IsInCarStore { get; set; }
    }
    public class CarImageDTO
    {
        public int ID { get; set; }
        public int CarID { get; set; }
        public CarDTO Car { get; set; }
        public long FileID { get; set; }
        public FileDTO File { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class CarStoreDTO
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string ManagerName { get; set; }
        public string NameOfFormFiller { get; set; }
        public int ProvinceID { get; set; }
        public ProvinceDTO Province { get; set; }
        public string Email { get; set; }
        public string Telephone { get; set; }
        public string Address { get; set; }
        public string Description { get; set; }
        public string KeyWords { get; set; }
        public int UserID { get; set; }
        public UserDTO User { get; set; }
        public DateTime? CreateDate { get; set; }
        public string strCreateDate { get; set; }
        public DateTime? FinishDate { get; set; }
        public string strFinishDate { get; set; }
        public int VisitCount { get; set; }
        public short CarStoreTariffID { get; set; }
        public CarStoreTariffDTO CarStoreTariff { get; set; }
        public List<CarDTO> Cars { get; set; }
        public long? FileID { get; set; }
        public FileDTO File { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsActive { get; set; }
    }
    public class CarStoreTariffDTO
    {
        public short ID { get; set; }
        public string Title { get; set; }
        public float Price { get; set; }
        public short Period { get; set; }
        public bool ShowVistCount { get; set; }
        public bool ShowInOtherAnnouncment { get; set; }
        public bool SendEmailToCustomer { get; set; }
        public double PriorityCoefficient { get; set; }
        public string Description { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class CarStore_CarDTO
    {
        public int CarStoreID { get; set; }
        public CarStoreDTO CarStore { get; set; }
        public int CarID { get; set; }
        public CarDTO Car { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsActive { get; set; }
    }
    public class ColorDTO
    {
        public int ID { get; set; }
        public string Code { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ModelDTO
    {
        public int ID { get; set; }
        public string Code { get; set; }
        public int BrandID { get; set; }
        public BrandDTO Brand { get; set; }
        public string FileID { get; set; }
        public FileDTO File { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ModelPriceRangeDTO
    {
        public int ID { get; set; }
        public int MoldelID { get; set; }
        public ModelDTO Moldel { get; set; }
        public float MinPrice { get; set; }
        public float MaxPrice { get; set; }
        public DateTime LastUpdate { get; set; }
        public string strLastUpdate { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ModelSpecificationDTO
    {
        public int ID { get; set; }
        public int MoldelID { get; set; }
        public ModelDTO Moldel { get; set; }
        public int ProductYears { get; set; }
        public short CylinderNumber { get; set; }
        public short SupapNumber { get; set; }
        public string GearboxType { get; set; }
        public string DifferentialType { get; set; }
        public string EngineVolume { get; set; }
        public string EnginePower { get; set; }
        public string Length { get; set; }
        public string Width { get; set; }
        public string Height { get; set; }
        public string MaxSpeed { get; set; }
        public string Acceleration { get; set; }
        public string FuelConsuming { get; set; }
        public string FuleVolume { get; set; }
        public string AirBag { get; set; }
        public string BrakeSystem { get; set; }
        public string AirConditioner { get; set; }
        public string ChairSystem { get; set; }
        public string GlassSytem { get; set; }
        public string MirrorType { get; set; }
        public string LightingSystem { get; set; }
        public string OtherFacilities { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class PriceRangeDTO
    {
        public int ID { get; set; }
        public float PriceFrom { get; set; }
        public float PriceTO { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class RegionDTO
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ServiceCategoryDTO
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ServiceCenterDTO
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int UserID { get; set; }
        public UserDTO User { get; set; }
        public long? FileID { get; set; }
        public FileDTO File { get; set; }
        public string Telephone { get; set; }
        public string Address { get; set; }
        public string KeyWords { get; set; }
        public long? GoogleMapImageFileID { get; set; }
        public FileDTO GoogleMapImageFile { get; set; }
        public int RegionID { get; set; }
        public DateTime? CreateDate { get; set; }
        public string CreateDateString { get; set; }
        public DateTime? FinishDate { get; set; }
        public string FinishDateString { get; set; }
        public RegionDTO Region { get; set; }
        public short ServiceCenterTariffID { get; set; }
        public ServiceCenterTariffDTO ServiceCenterTariff { get; set; }
        public List<ServiceDTO> Services { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsActive { get; set; }
    }
    public class ServiceDTO
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public short ServiceCategoryID { get; set; }
        public ServiceCategoryDTO ServiceCategory { get; set; }
        public bool IsDeleted { get; set; }
    }    
    public class WatingForCallDTO
    {
        public int ID { get; set; }
        public int ModelID { get; set; }
        public ModelDTO Model { get; set; }
        public int UserID { get; set; }
        public UserDTO User { get; set; }
        public float MinPrice { get; set; }
        public float MaxPrice { get; set; }
        public int ProductYears { get; set; }
        public float MinTraveledDistance { get; set; }
        public float MaxTraveledDistance { get; set; }
        public int ColorID { get; set; }
        public ColorDTO Color { get; set; }
        public DateTime EndWatingDate { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ServiceCenterTariffDTO
    {
        public short ID { get; set; }
        public string Title { get; set; }
        public float Price { get; set; }
        public short Period { get; set; }
        public double PriorityCoefficient { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class FileDTO
    {
        public long ID { get; set; }
        public string Path { get; set; }
        public short TypeID { get; set; }
        public FileTypeDTO Type { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class FileTypeDTO
    {
        public short ID { get; set; }
        public string Code { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class ProvinceDTO
    {
        public int ID { get; set; }
        public string Code { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class CarStatusDTO
    {
        public int ID { get; set; }
        public string Code { get; set; }
        public bool IsDeleted { get; set; }
    }
    public class SerachCarDTO
    {
        public double? PriceMin { get; set; }
        public double? PriceMax { get; set; }
        public int? ProductYearMin { get; set; }
        public int? ProductYearMax { get; set; }
        public double? TraveledDistance_Min { get; set; }
        public double? TraveledDistance_Max { get; set; }
        public int? ColorID { get; set; }
        public int? ModelID { get; set; }
        public int? StatusID { get; set; }
    }
    public class SerachServiceDTO
    {
        public string Title { get; set; }
        public int? ServiceCategoryID { get; set; }
        public string ServiceCategoryTitle { get; set; }
    }
    public class SerachServiceCenterDTO
    {
        public string Name { get; set; }
        public string Telephone { get; set; }
        public string Address { get; set; }
    }
    public class SerachCarStoreDTO
    {
        public string Name { get; set; }
        public string ManagerName { get; set; }
        public int ProvinceID { get; set; }
        public string Email { get; set; }
        public string Telephone { get; set; }
        public string Address { get; set; }
        public string Description { get; set; }
    }
    public class SerachAllDTO
    {
        public PagingDTO<ServiceCenterDTO> ServiceCenter { get; set; }
        public PagingDTO<CarStoreDTO> CarStore { get; set; }
        public PagingDTO<CarDTO> Car { get; set; }
    }
    public class AllRelatedEntityDTO
    {
        public List<ServiceCenterDTO> ServiceCenter { get; set; }
        public List<CarStoreDTO> CarStore { get; set; }
        public List<CarDTO> Car { get; set; }
    }
    public class CarDetailDTO
    {
        public AllRelatedEntityDTO Related { get; set; }
        public CarDTO Car { get; set; }
        public UserDTO Owner { get; set; }
    }

    public class PagingDTO<TDTO>
    {
        public List<TDTO> Data { get; set; }
        public int TotalCount { get; set; }
    }

    public class ApproveAnn
    {
        public bool IsInCarStore { get; set; }
        public int carID { get; set; }
    }
    public enum CarSortFeild
    {
        Model=1,
        Brand=2,
        Year=3,
        Price=4,
        Usage=5,
        StartDate=6
    }    
    public enum ServiceCenterSorthFeild
    {
        Name = 1,        
    }
    public enum CarStoreSortFeild
    {
       Name  = 1,
    }
}
